// 存放各种路由调取的函数
const userModel = require('../models/users')
// 密码加密
const password_bcrypt = require('../utils/password_bcrypt')
// 往外暴露数据
module.exports = {
  // 注册
  async signup(req,res,next){
    //请求头  设置数据返回的格式
    res.set('content-type', 'application/json;charset=utf-8')

        // 接口测试 密码铭文存储，需要加密
         
        // 在controller下的user.js中使用post方法
        // 解构的好处是无需注意参数的顺序问题
        let {username,password} = req.body
        let result = await userModel.findOne(username)
        // console.log(result)
        if(result){
          res.send('存在')
        }else{
          let newPassword = password_bcrypt.jiami(password)
          let result = await userModel.save({password:newPassword,username})
        }
        //调用utils文件下的db.js中的save()方法
  
  
          // console.log(req.body)
          // console.log(result)
        // 获取到密码和用户名之后，需要进行判读用户登录的用户名和密码是否匹配
        // if(username === 'admin' && password === '123'){
        //      res.send('success')
        // }else{
        // }

        
    },
  // 登录
  async signin(req,res,next){
  res.set('content-type', 'application/json;charset=utf-8')

  let{username,password} = req.body
        let result = await userModel.findOne(username)
        if(result){
          if(await password_bcrypt.compare(password,result.password)){
          req.session.username = username
          res.render('succ', {
            data: JSON.stringify({
              msg: '用户登录成功.',
              username
            })
          })
          }else{
          res.render('fail', {
            data: JSON.stringify({
              msg: '用户登录失败.'
            })
          })
          }
        }else{
        res.render('fail', {
          data: JSON.stringify({
            msg: '用户登录失败.'
          })
        })
        }

  },
  // 是否登录
  async isSignin(req,res,next){
    res.set('content-type', 'application/json; charset=utf-8')
    let username = req.session.username
    if(username){
      res.render('succ',{
        data: JSON.stringify({
          msg: '用户有权限',
          username
        })
      })
    }else {
      res.render('fail', {
        data: JSON.stringify({
          msg: '用户没有权限'
        })
      })
    }

  },
  // 退出
  async signout(req,res,next) {
    res.set('content-type', 'application/json; charset=utf-8')
    // 解除免登录
    req.session = null
    res.render('succ', {
      data: JSON.stringify({
        msg: '用户登出成功.'
      })
    })
  }

}